package com.atguigu.srb.base.result;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;
//提前约定错误状态码和对应的描述信息
@Data
public class R {
    private Integer code;
    private String message;
    private Map<String ,Object> data = new HashMap<>();
    //以后每个接口都会创建R对象返回，为了方便使用，提供一些方法
    public static R ok(){
        return R.setResult(ResponseEnum.SUCCESS);
    }
    public static R error(){
        return R.setResult(ResponseEnum.ERROR);
    }
    //通过枚举对象给R对象设置code和message属性值
    public static R setResult(ResponseEnum  responseEnum){
        R r = new R();
        r.setMessage(responseEnum.getMessage());
        r.setCode(responseEnum.getCode());
        return r;
    }


    //快速修改设置r对象 code  msg  data属性值的方法
    public R code(Integer code){
        this.code = code;
        return this;
    }
    public R message(String message){
        this.message = message;
        return  this;
    }
    //向r对象的data中存入一对新的k-v数据
    public R data(String key,Object val){
        this.data.put(key,val);
        return this;
    }

    //使用一个新的map引用赋值给r对象的data属性
    public R data(Map<String ,Object> data){
        this.data = data;
        return this;
    }


//    public static void main(String[] args) {
//        R r = R.ok().code(100).message("hehe").data("k1", "v1").data("k2","v2")
//                .data(new HashMap<>());
//        System.out.println(r);
//    }

}
